package com.jy.adscm.hcPlan.service;

import com.jy.adscm.exception.AdscmSystemException;
import com.jy.adscm.hcPlan.bean.HcPlanMakePartMaterielExample;
import com.baomidou.mybatisplus.service.IService;
import com.jy.adscm.hcPlan.bean.support.HcPlanMaterielExportPrintSupport;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 单批次零件制造对应的物料需求 服务类
 * </p>
 *
 * @author yyy
 * @since 2018-08-23
 */
public interface HcPlanMakePartMaterielExampleService extends IService<HcPlanMakePartMaterielExample> {


    /**
     * 装配单批次零件制造的对应的物料需求数据
     * @param assemblyId
     * @throws AdscmSystemException
     */
    public void loadHcPartMaterielExampleByAssemblyId(Long assemblyId) throws AdscmSystemException;

    /**
     * 获取所有正在进行中的零件制造对应的物料需求记录
     * @return
     * @throws AdscmSystemException
     */
    public List<Map<String,Object>> getAllMakePartMaterielExample() throws AdscmSystemException;
    /**
     * 获取所有供应商
     * @return
     * @throws AdscmSystemException
     */
    public List<Map<String,Object>> getAllSupplier() throws AdscmSystemException;

    /**
     * 物料采购并单
     * @param materiel_purchase_time 开始采购时间
     * @param materiel_arrived_time 采购到货时间
     * @param payment_date 付款时间
     * @param materiel_total_price 物料并单总价
     * @param materiel_total_kg 物料并单总重量
     * @param supplier_id 供应商ID
     * @param isUpdate
     * @param ids
     * @throws AdscmSystemException
     */
    public String mergePartMateriel(String materiel_purchase_time,String materiel_arrived_time,String payment_date,Double materiel_total_price,Double materiel_total_kg,String supplier_id, String isUpdate,List<Long> ids) throws AdscmSystemException;
    /**
     * 程序自动计算，选择的一批待物料的采购时间、采购数量、供应商
     * @param ids 单批次物料ID
     * @throws AdscmSystemException
     */
    public Map<String,Object> calculatePurchaseMaterielTime(Long[] ids) throws AdscmSystemException;

    /**
     * 发布物料采购任务
     * @param merge_id
     * @throws AdscmSystemException
     */
    void submitMaterielTask(String merge_id) throws  AdscmSystemException;

    /**
     * 根据日期，获取某年某月的采购计划
     * @param date ：格式：yyyy-MM
     * @return
     * @throws AdscmSystemException
     */
    List<HcPlanMaterielExportPrintSupport> getAllMaterielExprotPrintMsg(String date) throws  AdscmSystemException;
}
